While a computer's hard drive may be used to load software onto a computer (e.g. notebook) it may also be used to play music through that same computer's speaker(s). In recent years the popularity of playing audio files (e.g. MP3 format for example) from a computer's hard drive has grown as the number of people with personal computers and notebook/laptop computers has increased dramatically.
However, in order to accomplish playing audio files from a hard drive it may be necessary to have special software (e.g. Windows media player ™ for example) installed on the computer. This software has traditionally been accessed by the computer system's processor. Therefore, it may be necessary for the computer to be powered and booted up so that the computer's processor can play an audio file from a hard drive. These requirements can waste time and power by requiring a system to be powered on, booted-up, and for the system to remain in this mode during the playing of audio files. The wasting of power is a more pronounced problem in a laptop computer which is running on a battery. All laptops use some type of rechargeable battery (lithium, nickel-cadmium, nickel-metal hydride).
The battery life varies depending on the type of rechargeable battery (lithium batteries tend to hold their charge longer) and how the computer is used (frequent use of disk drives consumes a lot of battery power). Also, it is important to note that an LCD flat panel used by a laptop or notebook computer consumes a significant amount of battery power. In addition to the main battery, laptops may have other batteries to run clocks and backup CMOS RAM.
In order to play audio files from a device's (e.g. notebook for example) hard drive while the device is in a power saving state (e.g. powered off, sleep mode, or suspend mode for example), a low power audio device incorporating a micro-controller (e.g. 8051 for example) may be useful. However, a standard file system (e.g. FAT32 used by DOS/Windows for example) is too complex to be handled by a small low power device such as a micro-controller (e.g. 8051 for example) with its limited resources. Jumping from song to song would take a long time (in the range of seconds) because the micro-controller needs to parse the entire file system to locate the next song. Also, song data (e.g. MP3 audio file for example) can be fragmented over a hard drive, adding more delays to playing back the data. The problem with using a low power device such as a micro-controller to play back files from a computer or audio jukebox physical storage medium (e.g. hard drive for example) is that the hard drives may be very large (e.g. frequently in excess of 10 GB for example) and they may contain thousands of files. A simple micro-controller is too slow and has too little processing resources to parse all that information.
Another problem with using a small low power device such as a micro-controller to handle a complex hard drive file system (e.g. FAT32 for example) is that a hard drive file system has a tendency to become very fragmented over time, especially when adding and removing a large number of files. This makes processing for the low power micro-controller even tougher, since now it needs to access data in a potential song all across the physical hard drive space. In addition to hard drive file systems such as FAT32 being very complex, there are a number of such file systems which the low power micro-controller may encounter on a PC (e.g. FAT12, FAT16, FAT32, FAT32X, NTFS, Linux, etc.), and therefore needs to understand and parse.
The above issues combined make it currently very difficult to write an embedded application in which a low powered microcontroller can be used to parse a hard drive file system and play back songs when the system in which the hard drive resides is turned off. What is needed is a new file system tailored towards a low powered micro-controller (e.g. 8051 for example). The file system should be simple so that the micro-controller can parse through it quickly.
A further goal in solving this problem would be to create a file system in which both the host operating system and a low powered micro-controller (e.g. 8051 for example) would have the ability to access the file system without too much overhead.